/**
 * 计算电影的结束放映时间，得到的是字符串
 * @param showTime - 电影开场时间
 * @param duration -电影放映持续时间
 * @returns 电影结束放映时间字符串
 */

// 计算放映结束时间
export const calculateStopShowTime = (
  showTime: string,
  duration: number
): string => {
  const startDate = new Date(showTime.replace(' ', 'T')) // 兼容 iOS
  const endDate = new Date(startDate.getTime() + duration * 60 * 1000)
  // 格式化年份
  const year = endDate.getFullYear()
  // 格式化月份 (1-12)，确保两位数
  const month = String(endDate.getMonth() + 1).padStart(2, '0')
  // 格式化日期 (1-31)，确保两位数
  const date = String(endDate.getDate()).padStart(2, '0')
  // 格式化小时 (0-23)，确保两位数
  const hours = String(endDate.getHours()).padStart(2, '0')
  // 格式化分钟 (0-59)，确保两位数
  const minutes = String(endDate.getMinutes()).padStart(2, '0')
  // 格式化秒 (0-59)，确保两位数
  const seconds = String(endDate.getSeconds()).padStart(2, '0')
  return `${year}-${month}-${date} ${hours}:${minutes}:${seconds}`
}

/**
 * 转换城市数据格式（包含递归处理子区域）
 * @param {Array} originalArray - 原始城市数据数组
 * @returns {Array} - 转换后的新数组
 * 获取的地区数据城市id可能和地区id相同，value前添加唯一标识符
 */
export const handleCityData = (
  arr: any[],
  level: 'city' | 'district' = 'city'
) => {
  return arr.map((ele: any) => {
    // 创建新对象并保留所有原始字段
    const newItem = { ...ele }
    // 添加 label 和 text 属性（不删除原字段）
    newItem.label = ele.cityName || ele.regionName
    newItem.text = ele.cityName || ele.regionName
    // 添加层级前缀确保值唯一性
    const idValue = ele.cityId || ele.regionId
    newItem.value = `${level}_${idValue}`
    newItem.id = idValue // 保留原始ID，用于后续业务逻辑
    newItem.level = level // 标记层级，方便后续处理
    // 递归处理 regions（如果存在且非空）
    if (ele.regions && ele.regions.length > 0) {
      // 创建"所有地区"对象
      const allRegionObj = {
        regionId: '',
        regionName: '所有地区',
        text: '所有地区',
        value: `city_${ele.cityId}district_`
      }
      // 将"所有地区"对象插入到regions数组的第一个位置
      newItem.children = [
        allRegionObj,
        ...handleCityData(ele.regions, 'district')
      ]
    }
    return newItem
  })
}
